home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / t_os / otohime / src / lib / hisin.asm < prev    next >
Assembly Source File  |  1994-06-01  |  3KB  |  93 lines

  1. ;
  2. ;            1994 1 高速サイン計算
  3. ;
  4.  
  5.     .386p
  6.  
  7.  
  8. ;    SIN
  9. ;input    eax = angle ( rate 10000H = 3.141592…/2 )
  10. ;output    eax = sin ( eax ) * 10000H
  11.  
  12. cseg    segment    dword public use32 'CODE'
  13.     assume    cs:cseg,ds:cseg
  14.  
  15.     public    hiSpeedSin
  16.     db    'hiSpeedSin',10
  17. hiSpeedSin    proc    near
  18.  
  19.     push    ebx
  20.     mov    edx,eax
  21.     and    edx,30000H
  22.     cmp    edx,10000H
  23.     je    sin01
  24.     cmp    edx,30000H
  25.     je    sin01
  26.     jmp    sin02
  27. sin01:    mov    bx,ax
  28.     mov    ax,0ffffH
  29.     sub    ax,bx
  30. sin02:    and    eax,0ffffH
  31.     call    sin03
  32. sin03:    pop    ecx
  33.     add    ecx,sintb-sin03
  34.     push    eax
  35.     shr    eax,8
  36.     mov    bx,cs:[ecx][eax*2]
  37.     mov    cx,cs:[ecx+2][eax*2]
  38.     and    ebx,0ffffH
  39.     and    ecx,0ffffH
  40.     sub    ecx,ebx
  41.     pop    eax
  42.     and    eax,0ffH
  43.     imul    eax,ecx
  44.     shr    eax,8
  45.     add    eax,ebx
  46.     cmp    edx,20000H
  47.     jb    sin04
  48.     mov    ebx,eax
  49.     xor    eax,eax
  50.     sub    eax,ebx
  51. sin04:
  52.     pop    ebx
  53.     ret
  54.  
  55. sintb dw 00000H,00192H,00324H,004B6H,00648H,007DAH,0096CH,00AFDH
  56.     dw    00C8FH,00E21H,00FB2H,01143H,012D5H,01465H,015F6H,01787H
  57.     dw    01917H,01AA7H,01C37H,01DC6H,01F56H,020E5H,02273H,02402H
  58.     dw    0250FH,0271DH,028AAH,02A37H,02BC3H,02D4FH,02EDBH,03066H
  59.     dw    031F1H,0337BH,03505H,0368EH,03816H,0399EH,03B26H,03CADH
  60.     dw    03E33H,03FB9H,0413EH,042C3H,04447H,045CAH,0474CH,048CEH
  61.     dw    04A4FH,04BD0H,04D4FH,04ECEH,0504DH,051CAH,05347H,054C3H
  62.     dw    0563EH,057B8H,05931H,05AAAH,05C21H,05D98H,05F0EH,06083H
  63.     dw    061F7H,0636AH,064DCH,0664DH,067BDH,0692CH,06A9AH,06C07H
  64.     dw    06D73H,06EDEH,07048H,071B1H,07319H,0747FH,075E5H,07749H
  65.     dw    078ACH,07A0FH,07B64H,07CCFH,07E2EH,07F8DH,080E7H,08242H
  66.     dw    0839BH,084F3H,0864AH,087A0H,088F5H,08A48H,08B99H,08CEAH
  67.     dw    08E39H,08F86H,090D3H,0921EH,09367H,094AFH,095F6H,0973BH
  68.     dw    0987FH,099C1H,09B02H,09C41H,09D7FH,09EBBH,09FF6H,0A12FH
  69.     dw    0A266H,0A39CH,0A4D1H,0A604H,0A735H,0A865H,0A993H,0AABFH
  70.     dw    0ABEAH,0AD13H,0AE3BH,0AF60H,0B085H,0B1A7H,0B2C8H,0B3E6H
  71.     dw    0B504H,0B61FH,0B739H,0B851H,0B967H,0BA7BH,0BB8EH,0BC9FH
  72.     dw    0BDAEH,0BEBBH,0BFC6H,0C0D0H,0C1D7H,0C2DDH,0C3E1H,0C4E3H
  73.     dw    0C5E3H,0C6E1H,0C7DDH,0C8D7H,0C9D0H,0CAC6H,0CBBBH,0CCADH
  74.     dw    0CD9EH,0CE8CH,0CF79H,0D063H,0D14CH,0D232H,0D317H,0D3F9H
  75.     dw    0D4DAH,0D5B8H,0D695H,0D76FH,0D847H,0D91DH,0D9F1H,0DAC3H
  76.     dw    0DB93H,0DC60H,0DD2CH,0DDF5H,0DEBDH,0DF82H,0E045H,0E106H
  77.     dw    0E1C4H,0E281H,0E33BH,0E3F3H,0E4A9H,0E55DH,0E60EH,0E6BDH
  78.     dw    0E76AH,0E815H,0E8BEH,0E964H,0EA08H,0EAAAH,0EB4AH,0EBE7H
  79.     dw    0EC82H,0ED1BH,0EDB1H,0EE45H,0EED7H,0EF67H,0EFF4H,0F07FH
  80.     dw    0F108H,0F18EH,0F212H,0F293H,0F313H,0F390H,0F40AH,0F483H
  81.     dw    0F4F9H,0F56CH,0F5DDH,0F64CH,0F6B9H,0F723H,0F78AH,0F7F0H
  82.     dw    0F852H,0F8B3H,0F911H,0F96DH,0F9C6H,0FA1DH,0FA72H,0FAC4H
  83.     dw    0FB13H,0FB60H,0FBABH,0FBF4H,0FC3AH,0FC7DH,0FCBEH,0FCFDH
  84.     dw    0FD39H,0FD73H,0FDAAH,0FDDFH,0FE12H,0FE42H,0FE6FH,0FE9AH
  85.     dw    0FEC3H,0FEE9H,0FF0DH,0FF2EH,0FF2EH,0FF4DH,0FF83H,0FF9BH
  86.     dw    0FFB0H,0FFC2H,0FFD2H,0FFE0H,0FFEBH,0FFF3H,0FFFAH,0FFFDH
  87.     dw    0FFFFH
  88.  
  89. hiSpeedSin    endp
  90.  
  91. cseg    ends
  92.     end
  93.